<?php
/**
 * addメソッドのテスト
 * 
 * オブジェクト生成の箇所は単にnewObjectを使っているだけなので、
 * その部分の試験はfactoryの試験で担保できているとし、割愛します。
 * 
 * @since 2012/03/11
 */
class TestCaseofYuToriAdd extends UnitTestCase {
	public function __construct () {
	}

	/**
	 * 子オブジェクトに正常に追加されるか
	 */
	public function TestOfBase () {
		// 親オブジェクト
		$p = YuTori::factory ('', 'test');
		
		$p->add ('child', 'childName');
		$this->assertFalse($p->child('childName')->isEmpty() , 'childで通常取得');

		$p->add ('child2', 'childName2');
		$this->assertIdentical($p->child('childName2')->call(), 'child2' , '追加した上で取得できるか');
		$this->assertIdentical($p->child('childName')->call(), 'child' , '追加した時に元のオブジェクトに影響がないか');

		$p->add ('child3', 'childName');
		$this->assertIdentical($p->child('childName')->call(), 'child3' , '名称重複時に上書きされるか');

		$p->add ('child4');
		$this->assertIdentical($p->child(2)->call(), 'child4' , '名称未指定時に追加されるか');

		$p->add ('child5', 0);
		$this->assertIdentical($p->child(3)->call(), 'child5' , '名称に0指定時に追加されるか');

		$p->add ('child6', 3);
		$this->assertIdentical($p->child(3)->call(), 'child6' , '数値名称で重複時に追加されるか');
	}
	
}